home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 2010 April / PCWorld0410.iso / pluginy Firefox / 12984 / 12984.xpi / chrome / VideoDownloaderToolbar.jar / content / preferences.js < prev    next >
Text File  |  2010-01-29  |  6KB  |  193 lines

  1. if(!com) var com={};
  2. if(!com.VidBar) com.VidBar={};
  3.  
  4. com.VidBar.Preferences = {
  5.  
  6.     pref : Components.classes["@mozilla.org/preferences-service;1"]
  7.             .getService(Components.interfaces.nsIPrefService).getBranch("vidbar."),
  8.     
  9.     getPref : function(name, type, def_value) {
  10.         var v = def_value;
  11.         try {
  12.             switch (type) {
  13.                 case "bool" :
  14.                     v = this.pref.getBoolPref(name);
  15.                     break;
  16.                 case "int" :
  17.                     v = this.pref.getIntPref(name);
  18.                     break;
  19.                 case "text" :
  20.                     v = this.pref.getCharPref(name);
  21.                     break;
  22.             }
  23.         } catch (e) {
  24.         }
  25.         return v;
  26.     },
  27.     
  28.     setPref : function(name, type, value) {
  29.         try {
  30.             switch (type) {
  31.                 case "bool" :
  32.                     v = this.pref.setBoolPref(name, value);
  33.                     break;
  34.                 case "int" :
  35.                     v = this.pref.setIntPref(name, value);
  36.                     break;
  37.                 case "text" :
  38.                     v = this.pref.setCharPref(name, value);
  39.                     break;
  40.             }
  41.         } catch (e) {
  42.         }
  43.     },
  44.     
  45.     setCheck : function(name, defaultValue) {
  46.         document.getElementById(name).checked = this.getPref(name, "bool", defaultValue);
  47.     },
  48.     
  49.     setRadio : function(name, defaultValue) {
  50.         var value = this.getPref(name, "text", defaultValue);
  51.         var rg = document.getElementById(name);
  52.         for (var i in rg.childNodes) {
  53.             var r = rg.childNodes[i];
  54.             if (r.value == value) {
  55.                 rg.selectedIndex = i;
  56.                 break;
  57.             }
  58.         }
  59.     },
  60.     
  61.     setText : function(name, type, defaultValue) {
  62.         var value = this.getPref(name, type, defaultValue);
  63.         document.getElementById(name).value = value;
  64.     },
  65.     
  66.     onLoad : function() {
  67.         this.setCheck("show-file-size", false);
  68.         //this.setCheck("show-file-duration", false);
  69.         this.setCheck("show-in-context-menu", true);
  70.         this.setRadio("layout-type", "toolbar");
  71.         //this.setRadio("icon-pos", "toolbar");
  72.         this.setRadio("icon-style", "3D");
  73.         this.setText("max-downloads", "int", 0);
  74.         this.setText("min-file-size", "int", 100);
  75.         document.getElementById("download-location").value = com.VidBar.Pref.getDownloadDirectory().path;
  76.         this.setRadio("filename-type", "title");
  77.         //this.setText("inbox-url", "");
  78.         var exts = this.getPref("media-extensions", "text",
  79.                 "flv|ram|mpg|mpeg|avi|rm|wmv|mov|asf|mp3|rar|movie|divx|rbs|mp4|mpeg4");
  80.         // dump(exts+"\n");
  81.         var extList = exts.split("|");
  82.         var extListBox = document.getElementById("media-extensions");
  83.         for (var i in extList) {
  84.             if (extList[i] && extList[i] != "")
  85.                 extListBox.appendItem(extList[i], extList[i]);
  86.         }
  87.     },
  88.     
  89.     updateCheckPref : function(name) {
  90.         var v = document.getElementById(name).checked;
  91.         this.setPref(name, "bool", v);
  92.     },
  93.     
  94.     updateRadioPref : function(name) {
  95.         var rg = document.getElementById(name);
  96.         this.setPref(name, "text", rg.selectedItem.value);
  97.     },
  98.     
  99.     updateTextPref : function(name, type) {
  100.         var v = document.getElementById(name).value;
  101.         this.setPref(name, type, v);
  102.     },
  103.     
  104.     checkStorageLocation : function() {
  105.         var stDir = document.getElementById("download-location").value;
  106.     
  107.         var stDirFile = Components.classes["@mozilla.org/file/local;1"]
  108.                 .createInstance(Components.interfaces.nsILocalFile);
  109.     
  110.         try {
  111.             stDirFile.initWithPath(stDir);
  112.         } catch (e) {
  113.             alert("Failed to create directory " + stDir);
  114.             return false;
  115.         }
  116.     
  117.         if (stDirFile.exists()) {
  118.             if (!stDirFile.isDirectory()) {
  119.                 alert(stDir + " is not a directory");
  120.                 return false;
  121.             }
  122.         } else {
  123.             var r = confirm(stDir + " does not exis.\r\nDo you want to create now?");
  124.             if (r == false)
  125.                 return false;
  126.             try {
  127.                 stDirFile
  128.                         .create(Components.interfaces.nsIFile.DIRECTORY_TYPE, 0775)
  129.             } catch (e) {
  130.                 alert("Failed to create directory " + stDir);
  131.                 return false;
  132.             }
  133.         }
  134.         return true;
  135.     },
  136.     
  137.     doOk : function() {
  138.         if (!this.checkStorageLocation())
  139.             return false;
  140.     
  141.         this.updateCheckPref("show-file-size");
  142.         //this.updateCheckPref("show-file-duration");
  143.         this.updateCheckPref("show-in-context-menu");
  144.         this.updateRadioPref("layout-type");
  145.         //this.updateRadioPref("icon-pos");
  146.         this.updateRadioPref("icon-style");
  147.         this.updateTextPref("max-downloads", "int");
  148.         this.updateTextPref("min-file-size", "int");
  149.         this.updateRadioPref("filename-type");
  150.         //this.updateTextPref("inbox-url", "text");
  151.         com.VidBar.Pref.setDownloadDirectory(document.getElementById("download-location").value);
  152.     
  153.         var extListBox = document.getElementById("media-extensions");
  154.         var extList = [];
  155.         for (var i in extListBox.childNodes) {
  156.             if (extListBox.childNodes[i].value
  157.                     && extListBox.childNodes[i].value != "")
  158.                 extList.push(extListBox.childNodes[i].value);
  159.         }
  160.         this.setPref("media-extensions", "text", extList.join("|"));
  161.         return true;
  162.     },
  163.     
  164.     changeDownloadDir : function() {
  165.         var element = document.getElementById("download-location");
  166.         var nsIFilePicker = Components.interfaces.nsIFilePicker;
  167.         var fp = Components.classes["@mozilla.org/filepicker;1"]
  168.                 .createInstance(nsIFilePicker);
  169.         fp.init(window, "Select Directory to Store Videos",
  170.                 nsIFilePicker.modeGetFolder);
  171.         var res = null;
  172.         res = fp.show();
  173.         if (res == nsIFilePicker.returnOK) {
  174.             element.value = fp.file.path;
  175.         }
  176.     },
  177.     
  178.     addExt : function() {
  179.         var elem = document.getElementById("new-file-ext");
  180.         var ext = elem.value;
  181.         var extListBox = document.getElementById("media-extensions");
  182.         extListBox.appendItem(ext, ext);
  183.         elem.value = "";
  184.     },
  185.     
  186.     removeExt : function() {
  187.         var extListBox = document.getElementById("media-extensions");
  188.         if (extListBox.selectedIndex != -1) {
  189.             extListBox.removeItemAt(extListBox.selectedIndex);
  190.         }
  191.     }
  192.  
  193. };